package com.allwees.support.payment.oceanpay.dto;

import lombok.Data;

/**
 * 前端form表单所需参数
 *
 * @author Daniel
 * @version 1.0.0
 * @since 2020/12/4 20:40
 */
@Data
public class PayParam {
    /**
     * 必填 Oceanpayment 账户
     */
    private String account;
    /**
     * 必填 账户号下的终端号
     */
    private String terminal;
    /**
     * 必填 交易安全签名，用于验证交易的安全性。使用 SHA256 加密，明文加密结构：
     * account+terminal+backUrl+order_number+order_currency+order_am
     * ount+billing_firstName+billing_lastName+billing_email+secureCode
     */
    private String signValue;
    /**
     * 必填 返回支付信息的网站 URL 地址
     * 用于浏览器跳转
     */
    private String backUrl;

    /**
     * 可选 服务器回调 URL 地址，用于交易结果推送及其他业务状态推送
     * 为了获取更准确订单状态，此参数建议必传
     * 仅支持 80 及 443 端口 收到服务器回调后需
     * 响应 receive-ok
     */
    private String noticeUrl;
    /**
     * 必填
     * 支付方式，值为 Credit Card
     * 如果不填则默认支付方式为 Credit Card
     */
    private String methods = "Credit Card";
    /**
     * 可选
     * 影响持卡人看到的支付页面
     * 0: PC 端页面 (默认)
     * 1: 手机端页面
     */
    private String pages = "0";

    /**
     * 必填
     * 网站订单号
     * 3天时间内同一终端号下，已经有成功或待处理的相同订单号下，不能再次提交
     */
    private String order_number;
    /**
     * 必填
     * 订单号的交易币种
     * 采用国际标准 ISO 4217，请参考附录
     */
    private String order_currency;
    /**
     * 必填
     * 订单号的交易金额
     * 最大支持小数点后 2 位数，如：1.00、5.01 如
     * 果交易金额为 0，不需要发送至钱海支付系统
     */
    private String order_amount;

    /**
     * 必填
     * 消费者的名
     * 如果没有该值必须传：消费者 id 或 N/A 传值时须去首尾空格，对特殊
     * 字符(‘“ < >)进行转义，否则会影响signValue 校验
     */
    private String billing_firstName;
    /**
     * 必填
     * 消费者的姓
     * 如果没有该值必须传：消费者 id 或 N/A
     * 传值时须去首尾空格，对特殊字符(‘“ < >)进行转义，否则会影响
     * signValue 校验
     */
    private String billing_lastName;

    /**
     * 必填
     * 消费者的邮箱
     * 如果没有该值可默认传：消费者 id+@+域名或简称.com 传值时须去首
     * 尾空格，对特殊字符 & ; , \ （ ） [ ] 和首字符有 .和@符
     * 号之前有. 直接去除，否则会影响交易
     */
    private String billing_email;

    /**
     * 必填
     * 消费者的电话
     * 如果没有该值必须传：N/A
     */
    private String billing_phone;
    /**
     * 必填
     * 消费者的账单国家
     * 采用国际标准 ISO 3166 代码，如：美国 — US
     * 如果没有该值必须传： N/A
     * 如果采用的是非国际标准 ISO 3166 代码，会影响系统的风控判断
     */
    private String billing_country;
    /**
     * 可选
     * 消费者的州（省、郡），
     * 如果没有该值可传：N/A
     */
    private String billing_state;
    /**
     * 必填
     * 消费者的城市
     * 如果没有该值必须传：N/A
     */
    private String billing_city;
    /**
     * 必填
     * 消费者的详细地址
     * 如果没有该值必须传：N/A
     */
    private String billing_address;
    /**
     * 必填
     * 消费者的邮编
     * 如果没有该值必须传：N/A
     */
    private String billing_zip;

    /**
     * 可选
     * 收货人的名
     * 如果没有该值可传：N/A
     */
    private String ship_firstName;
    /**
     * 可选
     * 收货人的姓
     * 如果没有该值可传：N/A
     */
    private String ship_lastName;
    /**
     * 可选
     * 收货人的电话
     * 如果没有该值可传：N/A
     */
    private String ship_phone;
    /**
     * 可选
     * 收货人的国家
     * 采用国际标准 ISO 3166 代码，如：美国 — US 如果采用的是非
     * 国际标准 ISO 3166 代码，会影响系统的风控判断 如果没有该值
     * 可传：N/A
     */
    private String ship_country;

    /**
     * 可选
     * 收货人的州（省、郡）
     * 如果没有该值可传：N/A
     */
    private String ship_state;
    /**
     * 可选
     * 收货人的城市
     * 如果没有该值可传：N/A
     */
    private String ship_city;
    /**
     * 可选
     * 收货人的详细地址
     * 如果没有该值可传：N/A
     */
    private String ship_addr;
    /**
     * 可选
     * 收货人的邮编
     * 如果没有该值可传：N/A
     */
    private String ship_zip;

    /**
     * 必填
     * 产品 SKU
     * 多个产品用 ; 隔开 如
     * 果没有该值可传：N/A
     */
    private String productSku;

    /**
     * 必填
     * 产品名称
     * 多个产品用 ; 隔开
     * 如果没有该值可传：N/A
     */
    private String productName;
    /**
     * 必填
     * 产品数量
     * 多个产品用 ; 隔开 如
     * 果没有该值可传：N/A
     */
    private String productNum;
}
